home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 501-525 / disk_501 / dominos / dominos.bas < prev    next >
BASIC Source File  |  1992-05-06  |  33KB  |  816 lines

  1.        '23nd listing 6/1/91
  2. WINDOW 3,,,16:game=0
  3. palette 0,0,0,1
  4. palette 1,1,1,1
  5. palette 2,0,0,0
  6. palette 3,1,0.5,0
  7. line (25,20)-(275,70),2,bf:line (325,20)-(575,70),2,bf
  8. line (25,110)-(275,160),2,bf:line (325,110)-(575,160),2,bf
  9. circle (87,45),4,1:paint (87,45),1,1
  10. circle (212,45),4,1:paint (212,45),1,1
  11.  
  12. circle (340,25),4,1:paint (340,25),1,1
  13. circle (435,65),4,1:paint (435,65),1,1
  14. circle (465,25),4,1:paint (465,25),1,1
  15. circle (560,65),4,1:paint (560,65),1,1
  16.  
  17. circle (40,115),4,1:paint (40,115),1,1
  18. circle (87,135),4,1:paint (87,135),1,1
  19. circle (135,155),4,1:paint (135,155),1,1
  20. circle (165,115),4,1:paint (165,115),1,1
  21. circle (212,135),4,1:paint (212,135),1,1
  22. circle (260,155),4,1:paint (260,155),1,1
  23.  
  24. circle (340,115),4,1:paint (340,115),1,1
  25. circle (435,115),4,1:paint (435,115),1,1
  26. circle (465,115),4,1:paint (465,115),1,1
  27. circle (560,115),4,1:paint (560,115),1,1
  28. circle (340,155),4,1:paint (340,155),1,1
  29. circle (435,155),4,1:paint (435,155),1,1
  30. circle (465,155),4,1:paint (465,155),1,1
  31. circle (560,155),4,1:paint (560,155),1,1
  32. color 3:locate 11,30:print "...D O M I N O S..."
  33. color 1:locate 23,30:input "Press enter to continue";jji$
  34. CLS:color 3:locate 2,28
  35. print "...D O M I N O S..."
  36. color 1
  37. LOCATE 12,19:INPUT "What is your Name (5 letter limit)";R$:CLS
  38. if R$="" then R$="Playr"
  39. IF LEN(R$)>5 THEN R$=LEFT$(R$,5)
  40. color 3:locate 2,28:print "...D O M I N O S..."
  41. color 1:locate 9,19:print "There are three speeds of play:":print
  42. print "                        1.  Enter 0 for a very fast game."
  43. print "                        2.  Enter 1 for a normal game.
  44. print "                        3.  Enter 2 for a slow game."
  45. locate 15,19:input "Enter 0 or 1 or 2";ite
  46. if ite<>0 or ite<>1 or ite<>2 then ite=1
  47. cls:color 3:locate 2,30:print "...D O M I N O S..."
  48. color 1:locate 11,25:print R$;", do you like to Cheat...?"
  49. locate 13,30:input "Enter Yes or No";no$
  50. if left$(NO$,1)="Y" or left$(no$,1)="y" then ch=1  else ch=2
  51. MENU 5,0,1,"Information"
  52. MENU 5,1,1,"Game Information"
  53. IF CH=1 THEN
  54.     MENU 5,2,1,"Cheating on Computer"
  55.     menu 5,3,1,"Cheating on Boneyard"
  56.     end if
  57. on menu gosub cheating
  58. menu on
  59. 900 CLS:RANDOMIZE TIMER
  60. TIMER ON
  61. DIM R(30,2)         'R=INITIAL GAME DOT FORMATION ARRAY
  62. DIM m(30)           'M=INITIAL GAME RND SELECTION ARRAY
  63. DIM s(30,2)         'DOT ARRAY FOR DRAWING ON SCREEN    
  64. DIM t(30)           'T=RND SELECTION ARRAY FOR DRAWING DOTS ON SCREEN 
  65. DIM c(25,2)         'C=COMPUTER DOMINO IN PLAY ARRAY
  66. DIM p(25,2)         'P=PLAYER DOMINO IN PLAY ARRAY
  67. dom=1               'FIRST PLAY DOMINO           
  68. bone=14             '14 ORIGINAL DOMINOS IN BONEYARD        
  69. comp=7              '7 ORIGINAL COMPUTER DOMINOS          
  70. pomp=7              '7 ORIGINAL PLAYER DOMINOS         
  71. p4=INT(2000*RND)+1:FOR se=1 TO p4:NEXT 
  72. GOSUB SHUFFLE
  73. FOR vt=1 TO 7
  74.   cscore=cscore+p(vt,1)+p(vt,2)
  75.   pscore=pscore+c(vt,1)+c(vt,2)
  76.   NEXT vt
  77. LOCATE 18,2:PRINT R$;"'s";" Dominos";
  78. LOCATE 22,2:PRINT "Computer's Dominos";
  79. LINE (3,132)-(630,195),3,B:LINE (2,132)-(2,195),3
  80. LINE (3,163)-(631,163),3:LINE (3,179)-(631,179),3:LINE (631,132)-(631,195),3
  81. LINE (225,179)-(225,195),3:LINE (226,179)-(226,195),3
  82. LINE (458,179)-(458,195),3:LINE (459,179)-(459,195),3
  83. FOR gt=1 TO 14:R(m(gt),1)=9:R(m(gt),2)=9:NEXT gt  
  84. GOSUB STARTGAME              
  85. IF play=1 THEN GOSUB PLAYERDOMINO
  86. IF play=2 THEN GOSUB COMPDRAW:GOSUB PLAYERDOMINO:x=40:y=21        
  87. locate 24,2:print "Computer Score=";cscore;
  88. locate 24,31:print R$;"'s Score=";pscore;
  89. locate 24,60:print  "Boneyard No.=";bone;
  90. GOSUB gameplay 
  91. END
  92.  
  93. STARTGAME:        'DETERMINES WHO STARTS GAME
  94.   COLOR 3
  95.   FOR V1=6 TO 0 STEP -1   'SEES WHO HAS HIGHEST DOUBLET
  96.   FOR U=1 TO 7
  97.   IF (p(U,1)=p(U,2)) AND p(U,1)=V1 THEN 
  98.       play=1:dot=p(U,1):LOCATE 11,30:PRINT R$;" Starts Game":PRINT 
  99.       PRINT TAB (9)"Click Left Mouse on the Player Domino with";p(U,1);"-";p(U,1);"Dot Arrangement"
  100.       SOUND 880,2:x=160:y=169:FOR a=1 TO 7:LINE (x,y)-(x+16,y+6),2,BF
  101.       x=x+24:NEXT a:RETURN
  102.       END IF
  103.   IF (c(U,1)=c(U,2)) AND c(U,1)=V1 THEN 
  104.       dot=c(U,1):t1=TIMER:play=2:LOCATE 11,27:PRINT "Computer Starts Game"
  105.       SOUND 880,2:GOTO 190
  106.       END IF
  107.   NEXT U
  108.   NEXT V1
  109. 190 FOR t=1 TO 7:s(t,1)=c(t,1):s(t,2)=c(t,2):NEXT t  
  110.   FOR  PO=1 TO 4000:t2=TIMER:x=15:y=21:a=U
  111.     IF ply=0 AND INT(t2-t1)=2 THEN 
  112.       LINE (60,50)-(600,130),0,BF:LINE (x,y+10)-(x+25,y-10),2,BF
  113.       GOSUB VERTDOTS:dom=dom+1:GOSUB CDRAW:RETURN   
  114.       END IF
  115.   NEXT PO                                             
  116.   RETURN    
  117.  
  118. gameplay:        'SUB FOR PLAYING GAME
  119.   IF ply=0 THEN GOTO 200                      
  120.    IF pomp=0 THEN R=1:GOSUB winner
  121.   FOR Z1=1 TO pomp
  122.     IF p(Z1,1)=dot OR p(Z1,2)=dot AND ply<>0 THEN R=1:GOSUB whoplay:GOTO 200
  123.     NEXT Z1
  124.   z6=pomp:z7=bone:r=3:gosub whoplay
  125.   FOR R9=1 TO 28         
  126.   IF R(m(R9),1)<=6 OR R(m(R9),2)<=6  THEN     
  127.       pomp=pomp+1:bone=bone-1                   'ADDS DOMINOS TO PLAYERS PILE
  128.       p(pomp,1)=R(m(R9),1):p(pomp,2)=R(m(R9),2)
  129.       R(m(R9),1)=9:R(m(R9),2)=9
  130.    IF p(pomp,1)=dot OR p(pomp,2)=dot THEN
  131.       horiz=x:vert=y:add=1:r=5:gosub whoplay:gosub playerdomino  'add=1 is delay timer for display
  132.       x=horiz:y=vert:r=1:add=0:gosub whoplay:goto 200
  133.       END IF
  134.       end if 
  135.   NEXT R9
  136.   locate 24,73:print bone;
  137.   horiz=x:vert=y:gosub playerdomino
  138.   x=horiz:y=vert:R=1:GOSUB whoplay
  139.   IF bone=0 AND (p(pomp,1)<>dot OR p(pomp,2)<>dot) THEN 
  140.       R=4:GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOTO gameplay
  141.       END IF
  142. 200 WHILE MOUSE(0)=0:WEND
  143.   xx=MOUSE(3):YY=MOUSE(4)
  144.   IF ply=0 THEN                     
  145.         LEFT=134+(51*(U-1))+4*(U-1):RIGHT=134+(51*(U-1))+4*(U-1)+51
  146.         TOP=135:BOTTOM=145         'TOP DOMINO ROW
  147.         END IF
  148.   IF ply=0 AND xx>LEFT AND xx<RIGHT AND YY>TOP AND YY<BOTTOM THEN
  149.         LINE (60,50)-(629,130),0,BF:x=15:y=21:a=U
  150.         LINE (x,y+10)-(x+25,y-10),2,BF:GOSUB VERTDOTS:p(U,1)=7:p(U,2)=7
  151.         dom=dom+1
  152.         GOSUB PLAYERDOMINO:pomp=pomp-1:R=2:x=40:y=21:ply=90:GOSUB whoplay
  153.         GOSUB computerdomino
  154.         END IF
  155.   
  156.   IF ply=0 THEN GOTO gameplay
  157.    
  158.   FOR a=1 TO pomp          'LOOP IS FOR PLAYING AFTER FIRST MOVE
  159.   
  160.   IF a<=9 THEN LEFT=134+(51*(a-1))+4*(a-1):RIGHT=134+(51*(a-1))+4*(a-1)+51
  161.   IF a>=10 THEN LEFT=134+(51*(a-1-9))+4*(a-1-8):RIGHT=134+(51*(a-1-9))+4*(a-1-9)+51
  162.      IF (xx>LEFT AND xx<RIGHT) AND (YY>135 AND YY<145) AND xx<>zz AND a<=9 THEN ben=1 ELSE ben=0
  163.      IF (xx>LEFT AND xx<RIGHT) AND (YY>149 AND YY<159) AND xx<>zz AND a>=10 THEN bent=2 ELSE bent=0    
  164.                  'DOMINOS 1-10 ARE TOP HORIZONTAL ROW ON SCREEN
  165.                  'DOMINOS 24-28 ARE LOWEST HORIZONTAL ROW ON SCREEN
  166. IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND (dom<=10 OR dom>=24) THEN 
  167.       LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  168.       GOSUB horizDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7
  169.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+51:y=vert:R=2
  170.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  171.       END IF
  172.   
  173. IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND (dom<=10 OR dom>=24)  THEN 
  174.       LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  175.       GOSUB horizDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,1):p(a,1)=7:p(a,2)=7
  176.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+51:y=vert:R=2:GOSUB whoplay
  177.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  178.       END IF
  179.   
  180. IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND (dom<=10 OR dom>=24) THEN
  181.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  182.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7:p(a,2)=7
  183.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+25:y=vert:R=2:GOSUB whoplay
  184.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  185.       END IF
  186.                  'DOMINOS 11-13 ARE VERTICAL RIGHT ROW ON SCREEN
  187.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND dom=11 THEN 
  188.       y=26:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  189.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7
  190.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  191.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  192.       END IF
  193.    
  194.    IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND dom=11  THEN 
  195.       y=26:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  196.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,1):p(a,1)=7
  197.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  198.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  199.       END IF
  200.   
  201.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND dom=11 THEN
  202.       y=21:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  203.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7
  204.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  205.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  206.       END IF
  207.  
  208. IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND (dom=12 OR dom=22) THEN 
  209.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  210.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7
  211.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  212.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  213.       END IF
  214.  
  215. IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND (dom=12 OR dom=22) THEN 
  216.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  217.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,1):p(a,1)=7
  218.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  219.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  220.       END IF
  221.  
  222. IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND (dom=12 OR dom=22) THEN
  223.       x=x-13:y=y-5:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,1)
  224.       s(a,2)=p(a,2):GOSUB horizDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2)
  225.       p(a,1)=7:p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+13:y=vert+15
  226.       R=2:GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  227.       END IF
  228.                 
  229.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND dom=13 THEN 
  230.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  231.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7:p(a,2)=7
  232.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+5:R=2:GOSUB whoplay
  233.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  234.       END IF
  235.  
  236.    IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND dom=13 THEN 
  237.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  238.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,1):p(a,1)=7:p(a,2)=7
  239.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+5:R=2:GOSUB whoplay
  240.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  241.       END IF
  242.    
  243.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND dom=13 THEN
  244.       x=x-13:y=y-5:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,1)
  245.       s(a,2)=p(a,2):GOSUB horizDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2)
  246.       p(a,1)=7:p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert
  247.       R=2:GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  248.       END IF
  249.                  'DOMINOS 14-20 ARE MIDDLE HORIZONTAL ROW ON SCREEN
  250.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND (dom>=14 AND dom<=20) THEN 
  251.       x=x-51:horiz=x:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  252.       GOSUB horizDOTS:dom=dom+1:vert=y:dot=p(a,2):p(a,1)=7
  253.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert:R=2
  254.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  255.       END IF
  256.  
  257.    IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND (dom>=14 AND dom<=20) THEN 
  258.       x=x-51:horiz=x:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  259.       GOSUB horizDOTS:dom=dom+1:vert=y:dot=p(a,1):p(a,1)=7:p(a,2)=7
  260.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert:R=2:GOSUB whoplay
  261.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  262.       END IF
  263.   
  264.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND (dom>=14 AND dom<=20) THEN
  265.       x=x-25:horiz=x:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  266.       GOSUB VERTDOTS:dom=dom+1:vert=y:dot=p(a,2):p(a,1)=7:p(a,2)=7
  267.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert:R=2:GOSUB whoplay
  268.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  269.       END IF
  270.                 'DOMINOS 21-23 ARE LEFT VERTICAL ROW ON SCREEN
  271.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND dom=21 THEN 
  272.       x=x-25:y=y+5:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  273.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7
  274.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  275.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  276.       END IF
  277.    
  278.    IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND dom=21  THEN 
  279.       x=x-25:y=y+5:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  280.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,1):p(a,1)=7
  281.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  282.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  283.       END IF
  284.   
  285.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND dom=21 THEN
  286.       x=x-25:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  287.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7
  288.       p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz:y=vert+20:R=2
  289.       GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  290.       END IF
  291.  
  292.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)<>p(a,2) AND dom=23 THEN 
  293.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,1):s(a,2)=p(a,2)
  294.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2):p(a,1)=7:p(a,2)=7
  295.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+25:y=vert+5:R=2:GOSUB whoplay
  296.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  297.       END IF
  298.  
  299.    IF (ben=1 OR bent=2) AND p(a,2)=dot AND p(a,1)<>p(a,2) AND dom=23 THEN 
  300.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=p(a,2):s(a,2)=p(a,1)
  301.       GOSUB VERTDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,1):p(a,1)=7:p(a,2)=7
  302.       GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+25:y=vert+5:R=2:GOSUB whoplay
  303.       GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  304.       END IF
  305.    
  306.    IF (ben=1 OR bent=2) AND p(a,1)=dot AND p(a,1)=p(a,2) AND dom=23 THEN
  307.       x=x-13:y=y-5:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=p(a,1)
  308.       s(a,2)=p(a,2):GOSUB horizDOTS:dom=dom+1:horiz=x:vert=y:dot=p(a,2)
  309.       p(a,1)=7:p(a,2)=7:GOSUB PLAYERDOMINO:pomp=pomp-1:x=horiz+51:y=vert
  310.       R=2:GOSUB whoplay:GOSUB tim:GOSUB computerdomino:GOSUB tim:GOTO gameplay
  311.       END IF
  312.           
  313.  NEXT a
  314.   GOSUB tim
  315.   GOTO gameplay
  316.   RETURN
  317.  
  318. PLAYERDOMINO:     'DRAWING OF PLAYER DOMINOS ON LOWER SCREEN
  319.   zz=xx:cscore=0 
  320.   FOR Z=1 TO pomp-1
  321.     IF p(Z,1)=7 THEN 
  322.        p(Z,1)=p(Z+1,1)
  323.        p(Z,2)=p(Z+1,2)
  324.        p(Z+1,1)=7
  325.        p(Z+1,2)=7
  326.        END IF
  327.     NEXT Z
  328.   x=134:FOR t=1 TO pomp:s(t,1)=p(t,1):s(t,2)=p(t,2):NEXT t                
  329.   LINE (133,133)-(629,160),0,BF
  330.   FOR a=1 TO pomp
  331.   IF p(a,1)=7 OR p(a,2)=7 THEN GOTO 340
  332.   IF a<=9 THEN y=140         'TOP ROW OF PLAYER DOMINOS
  333.   IF a=10 THEN x=134:y=154   'BOTTOM ROW OF PLAYER DOMINOS
  334.   LINE (x,y-5)-(x+51,y+5),2,BF          
  335.   GOSUB horizDOTS                      
  336.   x=x+55:cscore=cscore+p(a,1)+p(a,2)
  337.   COLOR 1:LOCATE 24,17:PRINT cscore;
  338.   t11=timer
  339.   if add=1 and a>=z6 then
  340.         while int(t12-t11)<1
  341.         t12=timer
  342.         wend
  343.         z7=z7-1:sound 880,2:locate 24,73:print z7;    'z7=bone
  344.         end if
  345. 340  NEXT a
  346. locate 24,73:print bone; 
  347. IF pomp=0 THEN R=1:GOSUB winner  
  348.   RETURN
  349.  
  350. computerdomino:   'DRAWS FULL SIZE COMPUTER DOMINOS ON SCREEN
  351.  FOR t=1 TO comp:s(t,1)=c(t,1):s(t,2)=c(t,2):NEXT t
  352.  FOR a=1 TO comp
  353.               'DOMINOS 1-10 ARE TOP HORIZONTAL ROW ON SCREEN
  354.               'DOMINOS 11-13 ARE RIGHT VERTICAL ROW ON SCREEN
  355.               'DOMINOS 14-20 ARE MIDDLE HORIZONTAL ROW ON SCREEN
  356.               'DOMINOS 21-23 ARE LEFT VERTICAL ROW ON SCREEN
  357.               'DOMINOS 24-28 ARE LOWEST HORIZONTAL ROW ON SCREEN
  358.  
  359. IF c(a,1)=dot AND c(a,1)=c(a,2) AND (dom<=10 OR dom>=24) THEN gosub check
  360. IF YU=1 THEN YU=0:GOTO 40
  361. if c(a,1)=dot and c(a,1)=c(a,2) and (dom<=10 or dom>=24) then
  362.       LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  363.       GOSUB VERTDOTS:dom=dom+1:x=x+25:dot=c(a,2)
  364.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  365.       END IF
  366.  
  367. if c(a,1)=dot and c(a,1)<>c(a,2) and (dom<=10 or dom>=24) then gosub check
  368. if yu=1 then YU=0:GOTO 40
  369. If c(a,1)=dot AND c(a,1)<>c(a,2) AND (dom<=10 OR dom>=24) THEN 
  370.       LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  371.       GOSUB horizDOTS:dom=dom+1:x=x+51:dot=c(a,2)
  372.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  373.       END IF
  374.   
  375. if c(a,2)=dot and c(a,1)<>c(a,2) and (dom<=10 or dom>=24) then gosub check
  376. IF YU=1 THEN YU=0:GOTO 40
  377. IF c(a,2)=dot AND c(a,1)<>c(a,2) AND (dom<=10 OR dom>=24) THEN
  378.       LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,2):s(a,2)=c(a,1)
  379.       GOSUB horizDOTS:dom=dom+1:x=x+51:dot=c(a,1)
  380.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  381.       END IF
  382.   
  383. IF C(A,1)=DOT AND C(A,1)<>C(A,2) AND DOM=11 THEN GOSUB CHECK
  384. IF YU=1 THEN YU=0:GOTO 40
  385. IF  c(a,1)=dot AND c(a,1)<>c(a,2) AND dom=11 THEN 
  386.       y=26:LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  387.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):y=y+20
  388.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  389.       END IF
  390.   
  391. IF C(A,2)=DOT AND C(A,1)<>C(A,2) AND DOM=11 THEN GOSUB CHECK
  392. IF YU=1 THEN YU=0:GOTO 40
  393. IF c(a,2)=dot AND c(a,1)<>c(a,2) AND dom=11 THEN
  394.       y=26:LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,2):s(a,2)=c(a,1)
  395.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,1):y=y+20
  396.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  397.       END IF
  398.  
  399. IF c(a,1)=dot AND c(a,1)=c(a,2) AND dom=11 THEN GOSUB CHECK
  400. IF YU=1 THEN YU=0:GOTO 40
  401. IF C(A,1)=DOT AND C(A,1)=C(A,2) AND DOM=11 THEN
  402.       y=21:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  403.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):y=y+20
  404.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  405.       END IF
  406.  
  407. IF c(a,1)=dot AND c(a,1)<>c(a,2) AND (dom=12 OR dom=22) THEN GOSUB CHECK
  408. IF YU=1 THEN YU=0:GOTO 40
  409. IF C(A,1)=DOT AND C(A,1)<>C(A,2) AND (DOM=12 OR DOM=22) THEN
  410.       LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  411.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):y=y+20
  412.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  413.       END IF
  414.  
  415. IF c(a,2)=dot AND c(a,1)<>c(a,2)  AND (dom=12 OR dom=22) THEN GOSUB CHECK
  416. IF YU=1 THEN YU=0:GOTO 40
  417. IF C(A,2)=DOT AND C(A,1)<>C(A,2) AND (DOM=12 OR DOM=22) THEN
  418.       LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,2):s(a,2)=c(a,1)
  419.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,1):y=y+20
  420.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  421.       END IF
  422.  
  423. IF c(a,1)=dot AND c(a,1)=c(a,2) AND (dom=12 OR dom=22) THEN GOSUB CHECK
  424. IF YU=1 THEN YU=0:GOTO 40
  425. IF C(A,1)=DOT AND C(A,1)=C(A,2) AND (DOM=12 OR DOM=22) THEN
  426.       x=x-13:y=y-5:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,1)
  427.       s(a,2)=c(a,2):GOSUB horizDOTS:dom=dom+1:dot=c(a,2):x=x+13:y=y+15
  428.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  429.       END IF
  430.  
  431. IF c(a,1)=dot AND c(a,1)<>c(a,2) AND dom=13 THEN GOSUB CHECK
  432. IF YU=1 THEN YU=0:GOTO 40
  433. IF C(A,1)=DOT AND C(A,1)<>C(A,2) AND DOM=13 THEN
  434.       LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  435.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):y=y+5
  436.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  437.       END IF
  438.  
  439. IF c(a,2)=dot AND c(a,1)<>c(a,2) AND dom=13 THEN GOSUB CHECK
  440. IF YU=1 THEN YU=0:GOTO 40
  441. IF C(A,2)=DOT AND C(A,1)<>C(A,2) AND DOM=13 THEN
  442.       LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,2):s(a,2)=c(a,1)
  443.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,1):y=y+5
  444.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  445.       END IF
  446.  
  447.  
  448. IF c(a,1)=dot AND c(a,1)=c(a,2) AND dom=13 THEN GOSUB CHECK
  449. IF YU=1 THEN YU=0:GOTO 40
  450. IF C(A,1)=DOT AND C(A,1)=C(A,2) AND DOM=13 THEN
  451.       x=x-13:y=y-5:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,1)
  452.       s(a,2)=c(a,2):GOSUB horizDOTS:dom=dom+1:dot=c(a,2)
  453.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  454.       END IF
  455.     
  456. IF c(a,1)=dot AND c(a,1)<>c(a,2) AND (dom>=14 AND dom<=20) THEN GOSUB CHECK
  457. IF YU=1 THEN YU=0:GOTO 40
  458. IF C(A,1)=DOT AND C(A,1)<>C(A,2) AND (DOM>=14 AND DOM<=20) THEN
  459.       x=x-51:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,2)
  460.       s(a,2)=c(a,1):GOSUB horizDOTS:dom=dom+1:dot=c(a,2)
  461.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  462.       END IF
  463.  
  464. IF c(a,2)=dot AND c(a,1)<>c(a,2) AND (dom>=14 AND dom<=20) THEN GOSUB CHECK
  465. IF YU=1 THEN YU=0:GOTO 40
  466. IF C(A,2)=DOT AND C(A,1)<>C(A,2) AND (DOM>=14 AND DOM<=20) THEN
  467.       x=x-51:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,1)
  468.       s(a,2)=c(a,2):GOSUB horizDOTS:dom=dom+1:dot=c(a,1)
  469.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  470.       END IF
  471.  
  472. IF c(a,1)=dot AND c(a,1)=c(a,2) AND (dom>=14 AND dom<=20) THEN GOSUB CHECK
  473. IF YU=1 THEN YU=0:GOTO 40
  474. IF C(A,1)=DOT AND C(A,1)+C(A,2) AND (DOM>=14 AND DOM<=20) THEN
  475.       x=x-25:LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,1)
  476.       s(a,2)=c(a,2):GOSUB VERTDOTS:dom=dom+1:dot=c(a,1)
  477.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  478.       END IF
  479.  
  480. IF c(a,1)=dot AND c(a,1)<>c(a,2) AND dom=21 THEN GOSUB CHECK
  481. IF YU=1 THEN YU=0:GOTO 40
  482. IF C(A,1)=DOT AND C(A,1)<>C(A,2) AND DOM=21 THEN
  483.       x=x-25:y=y+5:LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  484.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):y=y+20
  485.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  486.       END IF
  487.   
  488. IF c(a,2)=dot AND c(a,1)<>c(a,2) AND dom=21 THEN GOSUB CHECK
  489. IF YU=1 THEN YU=0:GOTO 40
  490. IF C(A,2)=DOT AND C(A,1)<>C(A,2) AND DOM=21 THEN
  491.       x=x-25:y=y+5:LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,2):s(a,2)=c(a,1)
  492.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,1):y=y+20
  493.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  494.       END IF
  495.  
  496. IF c(a,1)=dot AND c(a,1)=c(a,2) AND dom=21 THEN GOSUB CHECK
  497. IF YU=1 THEN YU=0:GOTO 40
  498. IF C(A,1)=DOT AND C(A,1)=C(A,2) AND DOM=21 THEN
  499.       x=x-25:LINE (x,y+10)-(x+25,y-10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  500.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):y=y+20
  501.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  502.       END IF
  503.  
  504. IF c(a,1)=dot AND c(a,1)<>c(a,2) AND dom=23 THEN GOSUB CHECK
  505.    IF YU=1 THEN YU=0:GOTO 40
  506.    IF C(A,1)=DOT AND C(A,1)<>C(A,2) AND DOT=23 THEN
  507.       LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,1):s(a,2)=c(a,2)
  508.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,2):x=x+25:y=y+5
  509.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  510.       END IF
  511.  
  512.  IF c(a,2)=dot AND c(a,1)<>c(a,2) AND dom=23 THEN GOSUB CHECK
  513.     IF YU=1 THEN YU=0:GOTO 40
  514.     IF C(A,2)=DOT AND C(A,1)<>C(A,2) AND DOM=23 THEN
  515.       LINE (x,y-10)-(x+25,y+10),2,BF:s(a,1)=c(a,2):s(a,2)=c(a,1)
  516.       GOSUB VERTDOTS:dom=dom+1:dot=c(a,1):x=x+25:y=y+5
  517.       GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  518.       END IF
  519.  
  520. IF c(a,1)=dot AND c(a,1)=c(a,2) AND dom=23 THEN GOSUB CHECK
  521.     IF YU=1 THEN YU=0:GOTO 40
  522.     IF C(A,1)=DOT AND C(A,1)=C(A,2) AND DOM=23 THEN
  523.       x=x-13:y=y-5:LINE (x,y-5)-(x+51,y+5),2,BF:s(a,1)=c(a,1)
  524.       s(a,2)=c(a,2):GOSUB horizDOTS:dom=dom+1:dot=c(a,2)
  525.       x=x+51:GOSUB CDRAW:GOSUB COMPDRAW:Y2=0:Y3=0:RETURN
  526.       END IF
  527. 40  NEXT a
  528. IF Y2=2 THEN Y3=3:YU=0:GOTO COMPUTERDOMINO  'A MATCH WAS FOUND ON FIRST ROUND
  529.   FOR R9=1 TO 28         
  530.   IF R(m(R9),1)<=6 OR R(m(R9),2)<=6 THEN   
  531.       comp=comp+1                          'ADDS DOMINOS TO COMPUTERS PILE
  532.       c(comp,1)=R(m(R9),1):c(comp,2)=R(m(R9),2)
  533.       R(m(R9),1)=9:R(m(R9),2)=9:bone=bone-1
  534.       LOCATE 24,73:PRINT bone;
  535.       GOSUB COMPDRAW:SOUND 880,2
  536.       GOTO computerdomino
  537.       END IF 
  538.   NEXT R9
  539.   IF R=4 AND bone=0 THEN GOSUB winner
  540.   RETURN
  541.  
  542.  
  543. CDRAW:                   'RENUMBERS USED COMPUTER DOMINOS IN ITS ARRAY
  544.     c(a,1)=8:c(a,2)=8:SOUND 880,2
  545.     FOR LIK=1 TO comp-1
  546.       IF LIK=comp THEN RETURN
  547.       IF c(LIK,1)=8 OR c(LIK,2)=8 THEN
  548.           c(LIK,1)=c(LIK+1,1)
  549.           c(LIK,2)=c(LIK+1,2)
  550.           c(LIK+1,1)=8
  551.           c(LIK+1,2)=8
  552.           END IF
  553.     NEXT LIK
  554.     comp=comp-1
  555.     RETURN
  556.           
  557.  
  558. COMPDRAW:         'DRAWS LITTLE COMPUTER DOMINOS ON LOWER SCREEN
  559.   pscore=0             
  560.   IF ply=0 AND play=2 THEN comp=6
  561.   X9=160:Y9=169:ply=90
  562.   LINE (159,168)-(620,176),0,BF    
  563.   FOR AT=1 TO comp
  564.   pscore=pscore+c(AT,1)+c(AT,2)       
  565.   LINE (X9,Y9)-(X9+16,Y9+6),2,BF:X9=X9+24:NEXT AT
  566.   COLOR 1:LOCATE 24,40+LEN(R$):PRINT pscore;
  567.   IF comp=0 THEN R=2:GOSUB winner
  568.     RETURN
  569.  
  570. whoplay:            'SHOWS WHOSE TURN TO PLAY NEXT ON UPPER LEFT SCREEN
  571.  LINE (0,0)-(635,10),0,BF
  572.   LOCATE 1,2:COLOR 3
  573.   IF R=1 THEN PRINT R$;"'s";" turn to Play..."
  574.   IF R=2 THEN PRINT "Computer's turn to Play..."
  575.   if r=3 then print "Checking ";r$;"'s";" dominos"
  576.   IF R=4 THEN PRINT "The Boneyard is empty, ";R$;" is unable to Play, therefore Computer will Play":SOUND 880,2
  577.   if r=5 then 
  578.     print R$;", you have to draw from the Boneyard since you don't have a";dot
  579.     end if
  580.   COLOR 1                   
  581.   RETURN
  582.  
  583. CHECK:              'COMPUTER CHECKING DOMINOS 
  584. if y3=3 then yu=0:return
  585. FOR GT=1 TO POMP
  586. IF C(A,1)=DOT AND (P(GT,1)=C(A,2) OR P(GT,2)=C(A,2)) THEN YU=1:Y2=2:RETURN
  587. IF C(A,2)=DOT AND (P(GT,1)=C(A,1) OR P(GT,2)=C(A,1)) THEN YU=1:Y2=2:RETURN
  588. NEXT GT
  589. RETURN
  590.  
  591. CHEATING:                
  592. IF MENU(1)=1 THEN GOSUB Information
  593. IF MENU(1)=2 and ch=1 THEN GOSUB OPPCHEATER    'ch=1 player cheats on oppnt
  594. IF MENU(1)=3 and ch=1 THEN GOSUB BONECHEATER   'ch=1 player cheats on byard
  595. RETURN
  596.  
  597. Information:     'SHOWS GAMES PLAYED
  598. WINDOW 6,"       .....Game Information.....",(10,10)-(375,75),16
  599. d=p+c:PRINT
  600. PRINT "Games Played:  ";c+p
  601. IF d<1 THEN d=1
  602. PRINT "Computer Wins:  ";c
  603. print R$;" Wins:  ";p
  604. PRINT r$;" wins";int((p/(d))*100);"percent of the time."
  605. PRINT
  606. INPUT "Enter any key to continue";gt$
  607. WINDOW CLOSE 6
  608. RETURN
  609.   
  610. OPPCHEATER:       'LOOKS AT COMPUTERS DOMINOS
  611. WINDOW 4,"    .....Why are You Cheating.....",(10,10)-(350,180),16
  612. PRINT "The Computer has the following dominos:":PRINT:hi=1
  613. FOR gy=1 TO comp
  614. PRINT  TAB(15) c(gy,1);c(gy,2)
  615. hi=hi+1:NEXT:PRINT
  616. INPUT "Enter any key to continue";fr$
  617. WINDOW CLOSE 4
  618. RETURN
  619.   
  620. BONECHEATER:      'LOOKS AT DOMINOS IN BONEYARD
  621. WINDOW 5,"    .....Why are You Cheating.....",(10,10)-(350,180),16
  622. If bone=0 then 
  623.     print "The Boneyard is empty.........."
  624.     print:print:print:print:print
  625.     goto 678
  626.     end if
  627. PRINT "The Boneyard has the following Dominos:":PRINT
  628. FOR gy=1 TO 28
  629. IF R(m(gy),1)<=6 OR R(m(gy),2)<=6 THEN
  630.   PRINT TAB(15) R(m(gy),1);R(m(gy),2)
  631.   END IF
  632.   NEXT gy
  633. 678  INPUT "Enter any key to continue";fo$
  634.   WINDOW CLOSE 5
  635.   RETURN
  636.   
  637. SHUFFLE:      'DOMINO ARRAY FORMATION
  638.   FOR a=1 TO 28                    
  639.   READ R(a,1):READ R(a,2):NEXT a:RESTORE     
  640.   FOR i=1 TO 28:m(i)=i:NEXT i
  641.   FOR i=1 TO 28:x=INT(28*RND)+1
  642.   TP=m(i):m(i)=m(x):m(x)=TP:NEXT i
  643.   FOR t1=1 TO 7:p(t1,1)=R(m(t1),1):p(t1,2)=R(m(t1),2)
  644.     NEXT t1  
  645.   FOR t2=1 TO 7:c(t2,1)=R(m(t2+7),1):c(t2,2)=R(m(t2+7),2)
  646.     NEXT t2
  647.   DATA 0,0,0,1,0,2,0,3,0,4,0,5,0,6  
  648.   DATA 1,1,1,2,1,3,1,4,1,5,1,6      
  649.   DATA 2,2,2,3,2,4,2,5,2,6          
  650.   DATA 3,3,3,4,3,5,3,6              
  651.   DATA 4,4,4,5,4,6                  
  652.   DATA 5,5,5,6                      
  653.   DATA 6,6                          
  654.   RETURN
  655.  
  656. horizDOTS:     'DOMINO DOTS IN HORIZONTAL LAYOUT  
  657. IF s(a,1)=1 THEN  PSET (x+12,y),1:PSET (x+13,y),1
  658. IF s(a,1)=2 THEN  
  659.         PSET (x+4,y-3),1:PSET (x+5,y-3),1
  660.         PSET (x+20,y+3),1:PSET (x+21,y+3),1
  661.         END IF
  662. IF s(a,1)=3 THEN
  663.         PSET (x+4,y-3),1:PSET (x+5,y-3),1:PSET (x+12,y),1
  664.         PSET (x+13,y),1:PSET (x+20,y+3),1:PSET (x+21,y+3),1
  665.         END IF
  666. IF s(a,1)=4 THEN
  667.         PSET (x+4,y-3),1:PSET (x+5,y-3),1:PSET (x+20,y-3),1
  668.         PSET (x+21,y-3),1:PSET (x+4,y+3),1
  669.         PSET (x+5,y+3),1:PSET (x+20,y+3),1:PSET (x+21,y+3),1
  670.         END IF 
  671. IF s(a,1)=5 THEN
  672.         PSET (x+4,y-3),1:PSET (x+5,y-3),1:PSET (x+20,y-3),1
  673.         PSET (x+21,y-3),1:PSET (x+12,y),1:PSET (x+13,y),1
  674.         PSET (x+4,y+3),1:PSET (x+5,y+3),1:PSET (x+20,y+3),1
  675.         PSET (x+21,y+3),1
  676.         END IF 
  677. IF s(a,1)=6 THEN  
  678.         PSET (x+4,y-3),1:PSET (x+5,y-3),1:PSET (x+12,y-3),1
  679.         PSET (x+13,y-3),1:PSET (x+20,y-3),1:PSET (x+21,y-3),1
  680.         PSET (x+4,y+3),1:PSET (x+5,y+3),1:PSET (x+12,y+3),1
  681.         PSET (x+13,y+3),1:PSET (x+20,y+3),1:PSET (x+21,y+3),1
  682.         END IF 
  683. IF s(a,2)=1 THEN  PSET (x+12+25,y),1:PSET (x+13+25,y),1
  684. IF s(a,2)=2 THEN
  685.         PSET (x+4+25,y-3),1:PSET (x+5+25,y-3),1
  686.         PSET (x+20+25,y+3),1:PSET (x+21+25,y+3),1
  687.         END IF
  688. IF s(a,2)=3 THEN
  689.         PSET (x+4+25,y-3),1:PSET (x+5+25,y-3),1
  690.         PSET (x+12+25,y),1:PSET (x+13+25,y),1
  691.         PSET (x+20+25,y+3),1:PSET (x+21+25,y+3),1
  692.         END IF
  693. IF s(a,2)=4 THEN
  694.         PSET (x+4+25,y-3),1:PSET (x+5+25,y-3),1
  695.         PSET (x+20+25,y-3),1:PSET (x+21+25,y-3),1
  696.         PSET (x+4+25,y+3),1:PSET (x+5+25,y+3),1
  697.         PSET (x+20+25,y+3),1:PSET (x+21+25,y+3),1
  698.         END IF 
  699. IF s(a,2)=5 THEN
  700.         PSET (x+4+25,y-3),1:PSET (x+5+25,y-3),1:PSET (x+20+25,y-3),1
  701.         PSET (x+21+25,y-3),1:PSET (x+12+25,y),1:PSET (x+13+25,y),1
  702.         PSET (x+4+25,y+3),1:PSET (x+5+25,y+3),1
  703.         PSET (x+20+25,y+3),1:PSET (x+21+25,y+3),1
  704.         END IF 
  705. IF s(a,2)=6 THEN
  706.         PSET (x+4+25,y-3),1:PSET (x+5+25,y-3),1:PSET (x+12+25,y-3),1
  707.         PSET (x+13+25,y-3),1:PSET (x+20+25,y-3),1:PSET (x+21+25,y-3),1
  708.         PSET (x+4+25,y+3),1:PSET (x+5+25,y+3),1:PSET (x+12+25,y+3),1
  709.         PSET (x+13+25,y+3),1:PSET (x+20+25,y+3),1:PSET (x+21+25,y+3),1
  710.         END IF 
  711. RETURN
  712.  
  713. VERTDOTS:  'DOMINO DOTS IN VERTICAL LAYOUT
  714.                    
  715. IF s(a,1)=1 THEN PSET(x+12,y-5),1:PSET(x+13,y-5),1
  716. IF s(a,1)=2 THEN 
  717.          PSET(x+4,y-8),1:PSET(x+5,y-8),1
  718.          PSET(x+20,y-2),1:PSET(x+21,y-2),1
  719.          END IF
  720. IF s(a,1)=3 THEN 
  721.          PSET(x+4,y-8),1:PSET(x+5,y-8),1:PSET(x+12,y-5),1
  722.          PSET(x+13,y-5),1:PSET(x+20,y-2),1:PSET(x+21,y-2),1
  723.          END IF
  724. IF s(a,1)=4 THEN
  725.          PSET(x+4,y-2),1:PSET(x+5,y-2),1:PSET(x+20,y-2),1
  726.          PSET(x+21,y-2),1:PSET(x+4,y-8),1:PSET(x+5,y-8),1
  727.          PSET(x+20,y-8),1:PSET(x+21,y-8),1
  728.          END IF
  729. IF s(a,1)=5 THEN
  730.          PSET(x+4,y-2),1:PSET(x+5,y-2),1:PSET(x+20,y-2),1
  731.          PSET(x+21,y-2),1:PSET(x+12,y-5),1:PSET(x+13,y-5),1
  732.          PSET(x+4,y-8),1:PSET(x+5,y-8),1
  733.          PSET(x+20,y-8),1:PSET(x+21,y-8),1
  734.          END IF
  735. IF s(a,1)=6 THEN 
  736.          PSET(x+4,y-2),1:PSET(x+5,y-2),1:PSET(x+20,y-2),1
  737.          PSET(x+21,y-2),1:PSET(x+4,y-5),1:PSET(x+5,y-5),1
  738.          PSET(x+20,y-5),1:PSET(x+21,y-5),1:PSET(x+4,y-8),1
  739.          PSET(x+5,y-8),1:PSET(x+20,y-8),1:PSET(x+21,y-8),1
  740.          END IF
  741.                     
  742. IF s(a,2)=1 THEN PSET(x+12,y+5),1:PSET(x+13,y+5),1
  743. IF s(a,2)=2 THEN
  744.          PSET(x+4,y+2),1:PSET(x+5,y+2),1
  745.          PSET(x+20,y+8),1:PSET(x+21,y+8),1
  746.          END IF
  747. IF s(a,2)=3 THEN 
  748.          PSET(x+4,y+2),1:PSET(x+5,y+2),1:PSET(x+12,y+5),1
  749.          PSET(x+13,y+5),1:PSET(x+20,y+8),1:PSET(x+21,y+8),1
  750.          END IF
  751. IF s(a,2)=4 THEN
  752.          PSET(x+4,y+2),1:PSET(x+5,y+2),1:PSET(x+20,y+2),1
  753.          PSET(x+21,y+2),1:PSET(x+4,y+8),1:PSET(x+5,y+8),1
  754.          PSET(x+20,y+8),1:PSET(x+21,y+8),1
  755.          END IF
  756. IF s(a,2)=5 THEN
  757.          PSET(x+4,y+2),1:PSET(x+5,y+2),1:PSET(x+20,y+2),1
  758.          PSET(x+21,y+2),1:PSET(x+12,y+5),1:PSET(x+13,y+5),1
  759.          PSET(x+4,y+8),1:PSET(x+5,y+8),1:PSET(x+20,y+8),1
  760.          PSET(x+21,y+8),1
  761.          END IF
  762. IF s(a,2)=6 THEN
  763.          PSET(x+4,y+2),1:PSET(x+5,y+2),1:PSET(x+20,y+2),1
  764.          PSET(x+21,y+2),1:PSET(x+4,y+5),1:PSET(x+5,y+5),1
  765.          PSET(x+20,y+5),1:PSET(x+21,y+5),1:PSET(x+4,y+8),1
  766.          PSET(x+5,y+8),1:PSET(x+20,y+8),1:PSET(x+21,y+8),1
  767.          END IF
  768.    RETURN
  769.  
  770. tim:     'DELAY TIMER TO SLOW DOWN COMPILER
  771.   IF pomp=0 THEN R=1:GOSUB winner
  772.   if ite=0 then return
  773.   T6=TIMER
  774.     WHILE INT(T7-T6)<ite+1
  775.     T7=TIMER
  776.     IF INT(T7-T6)=ite+1  THEN RETURN
  777.     WEND
  778.   RETURN
  779.  
  780. winner:       'GAME WINNING STATEMENT
  781. t4=TIMER
  782. WHILE  INT(t5-t4)<3
  783. t5=TIMER
  784. IF INT(t5-t4)=3 THEN GOTO 1234
  785. WEND
  786. 1234 LINE (100,40)-(540,100),2,BF:COLOR 3,2
  787. IF R=1 THEN
  788.     p=p+1:LOCATE  8,34:PRINT R$;" Wins"
  789.     LOCATE 11,22:INPUT "Enter any key to start another game";jy$
  790.     END IF
  791. IF R=2 THEN
  792.     c=c+1:LOCATE 8,32:PRINT "Computer Wins"  
  793.     LOCATE 11,22:INPUT "Enter any key to start another game";jy$
  794.     END IF
  795. IF R=4 THEN
  796.     LOCATE 7,24:PRINT "Neither player has a ";dot;", therefore";
  797.     IF cscore>pscore THEN 
  798.        c=c+1:LOCATE 9,21
  799.        PRINT "The Computer wins with a higher score of";cscore
  800.        LOCATE 12,21:INPUT "Enter any key to start another game";ft$
  801.        END IF
  802.     IF pscore>cscore THEN
  803.        p=p+1:LOCATE 9,23
  804.        PRINT R$;" wins with a higher score of ";pscore
  805.        LOCATE 12,21:INPUT "Enter any key to start another game";ft$
  806.        END IF
  807.     END IF
  808.   CLS:COLOR 1,0:cscore=0:pscore=0:play=0:ply=0:vt=0:dom=0:bone=0:comp=0
  809.   pomp=0:se=0:p4=0:x=0:y=0:R=0:m=0:dot=0:a=0:horiz=0:vert=0:YU=0:Y2=0
  810.   ben=0:bent=0:hi=0:gy=0:i=0:t1=0:t2=0:t3=0:t4=0:t5=0:d=0
  811.   ERASE R,m,s,t,c,p
  812.   GOTO 900
  813.   RETURN
  814.   
  815.                   
  816.